// pages/personnelAdd/personnelAdd.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 船员姓名
    crewName: "",
    // 性别
    sex: "男",
    // 出生日期
    birth: new Date().getFullYear() + "-" + (new Date().getMonth() + 1) + "-" + new Date().getDate(),
    // 联系电话
    telphone: null,
    // 船舶名称
    shipNameArr: [],
    shipNameIndex: 0,
    shipName: "",
    // 职务
    dutyArr: [],
    dutyIndex: 0,
    duty: "船长",
    //船员状态
    personnelArr: [],
    personnelIndex: 0,
    personnel: "正常",
    // 假期状态
    holidayIndex: 0,
    holidayArr: [],
    holiday: "值勤",
    // 培训信息
    trainIndex: 0,
    trainArr: [],
    train: "无需培训",
    // 出航记录
    setSailIndex: 0,
    setSailArr: [],
    setSail: "未出航",
    // 现居住址
    address: '',
    // 备注说明
    remarks: "",
    // 上传图片
    mineImg: "",
    // 显示 修改按钮
    modify: true,
    // 修改id
    modifyId: null,
  },

  // 船员姓名
  crewNameChange(e) {
    this.setData({
      crewName: e.detail.value
    })
  },

  // 性别
  sexChange(e) {
    this.setData({
      sex: e.detail.value
    })
  },

  // 所在船只
  shipNameChange(e) {
    this.setData({
      shipNameIndex: parseInt(parseInt(e.detail.value)),
      shipName: this.data.shipNameArr[parseInt(e.detail.value)]
    })
  },

  // 职务
  dutyChange(e) {
    this.setData({
      dutyIndex: parseInt(parseInt(e.detail.value)),
      duty: this.data.dutyArr[parseInt(e.detail.value)]
    })
  },

  // 联系电话
  telphoneChange(e) {
    let telphone = parseInt(e.detail.value);
    if (!(/^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/.test(telphone))) {
      wx.showToast({
        title: '请输入正确的手机号码',
        duration: 2000,
        icon: 'none'
      })
    }
    this.setData({
      telphone
    })
  },

  // 出生年月
  birthChange(e) {
    this.setData({
      birth: e.detail.value
    })
  },

  //船员状态
  personnelChange(e) {
    this.setData({
      personnelIndex: parseInt(parseInt(e.detail.value)),
      personnel: this.data.personnelArr[parseInt(e.detail.value)]
    })
  },

  // 假期状态
  holidayChange(e) {
    this.setData({
      holidayIndex: parseInt(parseInt(e.detail.value)),
      holiday: this.data.holidayArr[parseInt(e.detail.value)]
    })
  },

  // 培训信息
  trainChange(e) {
    this.setData({
      trainIndex: parseInt(parseInt(e.detail.value)),
      train: this.data.trainArr[parseInt(e.detail.value)]
    })
  },

  // 出航记录
  setSailChange(e) {
    this.setData({
      setSailIndex: parseInt(parseInt(e.detail.value)),
      setSail: this.data.setSailArr[parseInt(e.detail.value)]
    })
  },

  // 现居住址
  addressChange(e) {
    this.setData({
      address: e.detail.value
    })
  },

  // 备注说明
  remarksChange(e) {
    this.setData({
      remarks: e.detail.value
    })
  },

  // 单图片上传
  upload() {
    wx.chooseImage({
      count: 1,
      success: (res) => {
        console.log(res);
        let filePath = res.tempFilePaths[0]; //小程序临时路径

        // 重新定义名字
        let indexOf = filePath.lastIndexOf("."); //点位置
        let ext = filePath.substr(indexOf); //切割字符串 .png
        let name = '船员图片';
        let time = new Date().getTime(); //时间戳

        // 把图片上传云存储
        wx.cloud.uploadFile({
          cloudPath: 'personnel/' + name + "_" + time + ext, // 上传至云端的路径
          filePath: filePath, // 小程序临时文件路径
          success: res => {
            // 返回文件 ID
            // console.log(res.fileID)
            this.setData({
              mineImg: res.fileID
            })
          }
        })

      }
    })
  },

  // 获取数据信息
  getPersonnelInfoData() {
    let _this = this;
    // 云函数语法 获取名称
    let shipNameArr = [];
    wx.cloud.callFunction({
      // 需调用的云函数名
      name: 'getShipName',
      // 成功回调
      success: (res) => {
        // console.log(res.result);
        res.result.forEach(item => {
          shipNameArr.push(item.darkBlue_shipName);
        })
        _this.setData({
          shipNameArr
        })
      }
    })

    // 云函数语法
    wx.cloud.callFunction({
      name: "getShipPort",
      success: (res) => {
        // 获取添加信息
        let arr = res.result.data[3];
        _this.setData({
          dutyArr: arr.duty, // 职务
          personnelArr: arr.personnel, // 船员状态
          holidayArr: arr.holiday, //假期
          trainArr: arr.train, // 培训
          setSailArr: arr.setSail, // 出航

        })
      }
    })
  },

  // 提交添加信息
  personnelSubmit() {
    let _this = this;
    let darkBlue_crewName = _this.data.crewName; // 船员姓名 
    let darkBlue_shipName = _this.data.shipName; // 名称 
    let darkBlue_telphone = _this.data.telphone; // 电话 
    let darkBlue_remarks = _this.data.remarks; // 备注说明
    let darkBlue_mineImg = _this.data.mineImg; // 上传图片
    if (darkBlue_crewName == "") {
      wx: wx.showToast({
        title: '请输入船员姓名',
        icon: 'error',
        duration: 2000
      })
      return false
    }
    else if (darkBlue_shipName == '') {
      wx: wx.showToast({
        title: '默认名称无效，请选择',
        icon: 'none',
        duration: 2000
      })
      return false
    }
    else if (darkBlue_telphone == "") {
      wx: wx.showToast({
        title: '请输入联系电话',
        icon: 'error',
        duration: 2000
      })
      return false
    }
    else if (darkBlue_remarks == "") {
      wx: wx.showToast({
        title: '请输入备注内容',
        icon: 'error',
        duration: 2000
      })
      return false
    }
    else if (darkBlue_mineImg == "") {
      wx: wx.showToast({
        title: '请上传图片',
        icon: 'error',
        duration: 2000
      })
      return false
    }
    else {
      // 1.获取数据库引用darkBlueStaff
      // 云函数语法
      wx.cloud.callFunction({
        name: "setStaffInfo",
        data: {
          darkBlue_crewName, // 船员姓名 
          darkBlue_shipName, // 船舶名称 
          darkBlue_telphone, // 联系电话
          darkBlue_remarks, // 备注说明
          darkBlue_sex: _this.data.sex, // 性别
          darkBlue_birth: _this.data.birth, // 出生日期
          // 职务
          darkBlue_dutyIndex: _this.data.dutyIndex, // 下标
          darkBlue_duty: _this.data.duty,
          //船员状态
          darkBlue_personnelIndex: _this.data.personnelIndex, // 下标
          darkBlue_personnel: _this.data.personnel,
          // 假期状态
          darkBlue_holidayIndex: _this.data.holidayIndex, // 下标
          darkBlue_holiday: _this.data.holiday,
          // 培训信息
          darkBlue_trainIndex: _this.data.trainIndex, // 下标
          darkBlue_train: _this.data.train,
          // 出航记录
          darkBlue_setSailIndex: _this.data.setSailIndex, // 下标
          darkBlue_setSail: _this.data.setSail,
          darkBlue_address: _this.data.address, //地址
          darkBlue_mineImg, // 单图片上传   
        },
        success: (res) => {
          console.log(res);
          wx.switchTab({
            url: '/pages/personnel/personnel',
          })
        }
      })
    }
  },

  // 获取修改信息 指定id值赋值给页面
  getPersonnelModifyData() {
    let _this = this;
    let index = _this.data.modifyId;
    // 云函数语法
    wx.cloud.callFunction({
      // 需调用的云函数名
      name: 'queryStaffInfo',
      data: {
        index
      },
      // 成功回调
      success: function (res) {
        // res.data 包含该记录的数据
        console.log(res)
        let arr = res.result.data;
        _this.setData({
          crewName: arr.darkBlue_crewName, // 船员姓名 
          shipName: arr.darkBlue_shipName, // 船舶名称 
          telphone: arr.darkBlue_telphone, // 联系电话
          remarks: arr.darkBlue_remarks, // 备注说明
          sex: arr.darkBlue_sex, // 性别
          birth: arr.darkBlue_birth, // 出生日期
          // 职务
          dutyIndex: arr.darkBlue_dutyIndex, // 下标
          duty: arr.darkBlue_duty,
          //船员状态
          personnelIndex: arr.darkBlue_personnelIndex, // 下标
          personnel: arr.darkBlue_personnel,
          // 假期状态
          holidayIndex: arr.darkBlue_holidayIndex, // 下标
          holiday: arr.darkBlue_holiday,
          // 培训信息
          trainIndex: arr.darkBlue_trainIndex, // 下标
          train: arr.darkBlue_train,
          // 出航记录
          setSailIndex: arr.darkBlue_setSailIndex, // 下标
          setSail: arr.darkBlue_setSail,
          address: arr.darkBlue_address, //地址
          mineImg: arr.darkBlue_mineImg, // 单图片上传   
        })
      }
    })
  },

  //提交修改信息
  personnelModifySubmit() {
    let _this = this;
    let darkBlue_crewName = _this.data.crewName; // 船员姓名 
    let darkBlue_telphone = _this.data.telphone; // 电话 
    let darkBlue_remarks = _this.data.remarks; // 备注说明
    let darkBlue_mineImg = _this.data.mineImg; // 上传图片
    let index = _this.data.modifyId; //修改ID
    if (darkBlue_crewName == "") {
      wx: wx.showToast({
        title: '请输入船员姓名',
        icon: 'error',
        duration: 2000
      })
      return false
    }
    else if (darkBlue_telphone == "") {
      wx: wx.showToast({
        title: '请输入联系电话',
        icon: 'error',
        duration: 2000
      })
      return false
    }
    else if (darkBlue_remarks == "") {
      wx: wx.showToast({
        title: '请输入备注内容',
        icon: 'error',
        duration: 2000
      })
      return false
    }
    else if (darkBlue_mineImg == "") {
      wx: wx.showToast({
        title: '请上传图片',
        icon: 'error',
        duration: 2000
      })
      return false
    }
    else {
      // 云函数语法
      wx.cloud.callFunction({
        name: "updateStaffInfo",
        data: {
          index,
          darkBlue_crewName, // 船员姓名 
          darkBlue_shipName: _this.data.shipName, // 船舶名称 
          darkBlue_telphone, // 联系电话
          darkBlue_remarks, // 备注说明
          darkBlue_sex: _this.data.sex, // 性别
          darkBlue_birth: _this.data.birth, // 出生日期
          // 职务
          darkBlue_dutyIndex: _this.data.dutyIndex, // 下标
          darkBlue_duty: _this.data.duty,
          //船员状态
          darkBlue_personnelIndex: _this.data.personnelIndex, // 下标
          darkBlue_personnel: _this.data.personnel,
          // 假期状态
          darkBlue_holidayIndex: _this.data.holidayIndex, // 下标
          darkBlue_holiday: _this.data.holiday,
          // 培训信息
          darkBlue_trainIndex: _this.data.trainIndex, // 下标
          darkBlue_train: _this.data.train,
          // 出航记录
          darkBlue_setSailIndex: _this.data.setSailIndex, // 下标
          darkBlue_setSail: _this.data.setSail,
          darkBlue_address: _this.data.address, //地址
          darkBlue_mineImg, // 单图片上传   
        },
        success: (res) => {
          console.log(res);
          wx.navigateBack({
            delta: 1
          })
        }
      })
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log(options);
    let _this = this;
    let modifyId = options.id;
    // 提示
    if (wx.getStorageSync('root')) {
      _this.getPersonnelInfoData();
      // 修改
      if (modifyId) {
        _this.setData({
          modify: false,
          modifyId
        })
        _this.getPersonnelModifyData();
      }
    } else {
      wx.showModal({
        title: '提示',
        content: '您没有权限',
        success(res) {
          if (res.confirm) {
            // 跳转到 登录（我的）页面
            wx.navigateBack({
              delta: 1
            })
          } else if (res.cancel) {
            // console.log('用户点击取消')
            wx.navigateBack({
              delta: 1
            })
          }
        }
      })
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})